home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 14 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.7 KB  |  70 lines

  1. ║CM:MSD - PART 14
  2. ║LM21:RM70:PP66:PG60
  3. ║P#27
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6. $├9┬┬           ╩UMP TO ├╨┘2 [$├┴3┬] TO PROCESS THE ACTUAL COPY.
  7. $├9┬┼  ─╪0000   ╩╙╥ ╘├30 [$├12─] TO PARSE THE COMMAND STRING.
  8. $├9├1           ╩╙╥ ┴╠╠─╥╙ [$├23├] TO SET UP THE DRIVE NUMBER FOR EACH FILE.
  9. $├9├4           ┴╬─ ╔═┴╟┼ [$┬5] WITH %01010101 AND IF THE RESULT IS NON-ZERO, THEN THE FILE NAMES DO NOT USE PATTERNS SO BRANCH TO ─╪0020.
  10. $├9├┴           ╙EE IF THE FIRST FILE NAME USES A WILD CARD SUCH AS '├1:*=...'.  ╔F THIS IS THE CASE, IT IS A COPY ALL COMMAND.  ╠OAD .╪ FROM ╞╔╠╘┬╠ [$4┼30] AND GET THE FIRST CHARACTER OF THE FILE NAME FROM      ├═─┬╒╞,╪ [$4┼00,╪].
  11. $├9─0           ╔F .┴ IS NOT $2┴ (*) THEN BRANCH TO ─╪0020.
  12. $├9─4           ╙ET ╞1├╬╘ [$┬2] TO $01 AND ╞2├╬╘ [$┬3] TO $02 AND JUMP TO ├╨┘┴╠╠ [$├┴21] TO COPY ALL THE FILES.
  13. $├9─┼  ─╪0010   ╠OAD .┴ WITH $30 (╙┘╬╘┴╪ ┼╥╥╧╥) AND TERMINATE THE COMMAND WITH A JUMP TO ├═─┼╥╥ [$├0╞─].
  14. $├9┼3  ─╪0020   ╠OAD .┴ FROM ╔═┴╟┼ [$┬5] AND ┴╬─ IT WITH %11011001 TO SEE IF THE SYNTAX IS BAD.  ╔F THE RESULT IS NON-ZERO, THEN THE SYNTAX IS BAD SO EXIT WITH A BRANCH TO ─╪0010.
  15. $├9┼9           ╧THERWISE, JUMP TO ├╧╨┘ [$├┴─┬] TO DO THE COPY.
  16.  
  17.  
  18.  
  19.        ╙┼╘╠╔╬   ╙ET CHANNELS 0-5 AS AVAILABLE
  20.  
  21. $├9┼├           ╙ET ╠╔╬╒╙┼ [$4├┬7/$4├┬8] TO $3╞/$00 TO INDICATE CHANNELS 0-5 ARE AVAILABLE AND RETURN.
  22.  
  23.  
  24.  
  25.        ─╒╨╨╥═   ├HECK SYNTAX FOR DUPLICATE AND COPY COMMANDS
  26.  
  27. $├9╞7           ╠OAD WITH $3─ (=) AND ╩╙╥ ╨┴╥╙┼ [$├18┼] TO SEE IF AN EQUAL SYMBOL CAN BE FOUND IN THE COMMAND.
  28. $├9╞├           ╔F AN EQUAL SYMBOL IS FOUND THEN BRANCH TO ─╨╥═2.
  29. $├9╞┼  ─╨╥═1    ╠OAD .┴ WITH $30 (╙┘╬╘┴╪ ┼╥╥╧╥) AND EXIT WITH A JUMP TO ├═─┼╥╥ [$├0╞─].
  30. $├┴03  ─╨╥═2    ╠OAD .┴ WITH THE NEXT CHARACTER AFTER (=) FROM ├═─┬╒╞,┘ [$4┼00,┘] AND ╩╙╥ ╘╙╘0╓1 [$├2─3] TO SEE IF IT IS '0' OR '1'.
  31. $├┴09           ╘HE DRIVE CANNOT BE DEFAULTED SO IF BIT 7 IS SET THEN THIS IS AN ERROR SO BRANCH TO ─╨╥═1.
  32. $├┴0┬           ╙AVE THE SOURCE DRIVE NUMBER IN ╞╔╠─╥╓+1 [$4├6─].
  33. $├┴0┼           ─ECREMENT .┘ BY 2 SO IT POINTS TO THE CHARACTER BEFORE (=).
  34. $├┴10           ╠OAD .┴ WITH THIS CHARACTER ├═─┬╒╞,┘ [$4┼00,┘] AND ╩╙╥ ╘╙╘0╓1 [$├2─3] TO SEE IF IT IS '0' OR '1'.
  35. $├┴16           ┴GAIN, THE DRIVE CANNOT BE DEFAULTED SO EXIT WITH A BRANCH TO ─╨╥═1 IF THIS IS THE CASE.
  36. $├┴18           ╘HE SOURCE AND DESTINATION DRIVES MUST BE DIFFERENT SO IF THEY ARE THE SAME THEN THIS IS AN ERROR SO BRANCH TO ─╨╥═1.
  37. $├┴1─           ╙AVE THE DESTINATION DRIVE AT ╞╔╠─╥╓ [$4├6├] AND RETURN.
  38. ║FP
  39.        ├╨┘┴╠╠   ├OPY ALL FILES FROM ONE DRIVE TO THE OTHER
  40.  
  41. $├┴21           ═OVE THE SECOND FILE NAME STRING TO THE END OF THE COMMAND BUFFER AND SET ├═─╙╔┌ [$4╞] TO $28.
  42. $├┴38           ╙AVE .┘ (NEW START FOR THE SECOND FILE NAME) IN ╞╔╠╘┬╠+1 [$4┼31].
  43. $├┴3┬  ├╨┘2     ╩╙╥ ╧╨╘╙├╚ [$├2┼0] TO DETERMINE THE OPTIMAL SEARCH PATTERN.
  44. $├┴3┼           ╩╙╥ ├╨┘╔╬╔ [$├┴┬┬] TO SET UP TO SCAN DIRECTORY.
  45. $├┴41           ╩╙╥ ╞╞╙╘ [$├3┴2] TO FIND THE FIRST DIRECTORY ENTRY.
  46. $├┴44           ╔F AN ENTRY WAS FOUND THEN BRANCH TO ├╨┘5.
  47. $├┴46           ╔F NO ENTRIES WERE FOUND THEN THE COPY IS DONE SO BRANCH TO ├╨┘4.
  48. $├┴48  ├╨┘3     ╥ESTORE THE VARIABLES WHICH PERMIT CONTINUATION OF THE SEARCH OF THE DIRECTORY FOR ANY MORE FILE NAMES WHICH MATCH THE 2'ND FILE NAME OF THE COMMAND.  ╘HE VARIABLES RESTORED FROM THE STACK ARE ─╔╥╙┼├ [$4├┼1], ╞╔╠╘┬╠+1 [$4┼31],         ╠╙╘┬╒╞ [$4├┼3], ╞╔╠├╬╘ [$4├┼5], ╔╬─┼╪ [$4├┼4], ╞╧╒╬─ [$4├┼0], ─┼╠╔╬─ [$┴╞], AND ─╥╓╞╠╟ [$4├─┼].
  49. $├┴67           ╩╙╥ ╨╒╨╙╔ [$├┴┬┬] TO SET UP TO CONTINUE THE DIRECTORY SCAN.
  50. $├┴6┴           ╩╙╥ ╞╞╥┼ [$├398] TO FIND THE NEXT DIRECTORY ENTRY WHICH MATCHES THE 2'ND NAME IN THE COPY COMMAND.
  51. $├┴6─           ╔F A FILE WAS LOCATED THEN BRANCH TO ├╨┘5.
  52. $├┴6╞  ├╨┘4     ╬O MORE FILES TO COPY SO EXIT WITH A JUMP TO ┼╬─├═─ [$├0├╞].
  53. $├┴72  ├╨┘5     ╙INCE SEVERAL FILES MAY NEED TO BE COPIED, THE CURRENT VARIABLES CONTROLLING THE SCAN OF THE DIRECTORY NEED TO BE SAVED SO THAT THE SEARCH MAY BE RESUMED AFTER THE FILE HAS BEEN COPIED.  ╙EE THE LIST AT ├╨┘3 TO SEE WHICH VARIABLES ARE KEPT.
  54. $├┴91           ╩╙╥ ├╨┘╬┴═ [$├┴┴┬] TO COPY THE FILE NAME TO THE COMMAND BUFFER.
  55. $├┴94           ╙ET ╞1├╬╘ [$┬2] AND ╞2├╬╘ [$┬3] TO 1.
  56. $├┴9┴           ╩╙╥ ╠╧╧╦╒╨ [$├366] TO FILL IN THE TABLES OF INFORMATION ABOUT THE FILE FROM THE DIRECTORY.
  57. $├┴9─           ╙ET ╞1├╬╘ [$┬2] TO 1 AND ╞2├╬╘ [$┬3] TO 2.
  58. $├┴┴5           ╩╙╥ ├┘ [$├┬34] TO COPY THE FILE.
  59. $├┴┴8           ╩UMP TO ├╨┘3 TO CONTINUE LOOKING FOR FILES TO COPY.
  60.  
  61.  
  62.  
  63.        ├╨┘╬┴═   ├OPY NAME FROM DIRECTORY TO COMMAND BUFFER
  64.  
  65. $├┴┴┬           ╠OAD .┘ WITH $03 (THE OFFSET OF THE FILE NAME IN A DIRECTORY ENTRY).
  66. $├┴┴─           ╙AVE .┘ IN ╞╔╠╘┬╠ [$4┼30].
  67. $├┴┬0  ├╬┴═1    ├OPY (─╔╥┬╒╞),┘ [($69),┘] TO ├═─┬╒╞,┘ [$4┼00,┘].
  68. $├┴┬5           ╔NCREMENT .┘ AND IF .┘ < $13 THEN LOOP BACK TO ├╬┴═1 TO COPY ANOTHER FILE NAME CHARACTER.
  69. $├┴┬┴           ╥ETURN.
  70.